/* 
 * Die Klasse erzeugt ein Dialogfenster, in dem die Daten fuer ein 
 * ein Objekt eingegeben werden koennen. Objekte sind Tueren, Fenster 
 * oder Theken.
 * 
 * Datei: ObjektAnlegenPanel.java   Autor:  Christian Plappert
 * Datum: 09.12.2011                Version: 0.1
 * 
 * Historie: 
 * 
 * 09.12.2011:  v0.1    Klasse wurde angelegt.
 *                      
 */
package bibvis;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import basis.lokal.Lokalisierung;

public class ObjektAnlegenPanel extends JDialog
{

  private static final long serialVersionUID = -4360697454891762272L;

  private JLabel laenge, breite, bezeichner;
  private JPanel panelOben, panelUnten;
  private JTextField txt_laenge, txt_breite, txt_info, txt_bezeichner;
  private JButton ok, ca;
  private Lokalisierung lokal;
  private String art;


  protected ObjektAnlegenPanel (Lokalisierung lokal,
    ObjektAufzaehlung typ)
  {
    this.lokal = lokal;
    this.art = typ.toString ().substring (0, 1).concat (
      typ.toString ().substring (1).toLowerCase ());

    panelOben = new JPanel ();
    panelUnten = new JPanel ();
    laenge = new JLabel (lokal.gibUebersetzung ("Laenge: "));
    laenge.setLabelFor (txt_laenge);
    breite = new JLabel (lokal.gibUebersetzung ("Breite: "));
    breite.setLabelFor (txt_breite);
    bezeichner = new JLabel (lokal.gibUebersetzung ("Art: "));
    bezeichner.setLabelFor (txt_bezeichner);
    setTitle (lokal.gibUebersetzung ("Objekt anlegen"));
    initialisieren ();
  }


  private void initialisieren()
  {
    setLayout (new GridBagLayout ());

    GridBagConstraints c = new GridBagConstraints ();
    c.ipadx = 40;
    c.ipady = 40;
    c.gridx = 0;
    c.gridy = 0;
    c.fill = GridBagConstraints.VERTICAL;
    c.insets = new Insets (5, 5, 5, 5);
    add (panelOben, c);
    panelOben.add (txt_info = new JTextField ());
    c.gridx = 0;
    c.gridy = 1;
    add (panelUnten, c);
    panelUnten.setLayout (new GridLayout (4, 2));
    panelUnten.add (bezeichner);
    panelUnten.add (txt_bezeichner = new JTextField ());
    txt_bezeichner.setText (lokal.gibUebersetzung (art));
    txt_bezeichner.setEditable (false);
    panelUnten.add (laenge);
    panelUnten.add (txt_laenge = new JTextField ());
    txt_laenge.addMouseListener (new KlickListener (txt_laenge));
    txt_laenge.setDocument (new IntegerDokument ());
    panelUnten.add (breite);
    panelUnten.add (txt_breite = new JTextField ());
    txt_breite.addMouseListener (new KlickListener (txt_breite));
    txt_breite.setDocument (new IntegerDokument ());
    panelUnten.add (ca = new JButton (lokal.gibUebersetzung ("ca")));
    panelUnten.add (ok = new JButton (lokal.gibUebersetzung ("ok")));
    pack ();
    setVisible (true);
  }


  protected JLabel gibLaenge()
  {
    return laenge;
  }


  protected JLabel gibBreite()
  {
    return breite;
  }


  protected JLabel gibBezeichner()
  {
    return bezeichner;
  }


  protected JTextField gibTxt_laenge()
  {
    return txt_laenge;
  }


  protected JTextField gibTxt_breite()
  {
    return txt_breite;
  }


  protected JTextField gibTxt_info()
  {
    return txt_info;
  }


  protected JButton gibOk()
  {
    return ok;
  }


  protected void setzeOk(JButton ok)
  {
    this.ok = ok;
  }


  protected JButton gibCa()
  {
    return ca;
  }


  protected void setzeCa(JButton ca)
  {
    this.ca = ca;
  }


  /**
   * Die Methode setzt voreingetragene Daten in das Eingabefenster.
   * Diese sind entweder die Daten des vorherigen Fensters oder bei der
   * ersten Erzeugung Standardwerte.
   * 
   * @param laenge
   * @param breite
   */
  protected void setzeVoreingetrageneDaten(int laenge, int breite)
  {
    txt_laenge.setText ("" + laenge);
    txt_breite.setText ("" + breite);
  }

  /**
   * Der KlickListener hat die Aufgabe ein JTextfeld, in das geklickt
   * worden ist, wieder weiss zu faerben, falls es durch eine Fehler-
   * meldung rot gefaerbt worden ist.
   * 
   */
  private class KlickListener extends MouseAdapter
  {
    JTextField textFeld;


    public KlickListener (JTextField textFeld)
    {
      this.textFeld = textFeld;
    }


    @Override
    public void mouseClicked(MouseEvent e)
    {
      textFeld.setBackground (Color.WHITE);
    }
  }
}
